SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE  Procedure [dbo].[SP_TCMOVI_CAJA_I13]          
/*-------------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.                --*/          
/*---Cliente              : OFISIS                 --*/          
/*---Sistema              : Presupuesto                --*/          
/*---M¸dulo               : Empresa                    --*/          
/*---Programa             : Grabaci¸n Cabecera         --*/          
/*---                       Movimiento Caja   (Egresos)--*/          
/*---Script               : tcmovi_c.sql               --*/          
/*---Nombre SP            : SP_TCMOVI_CAJA_I13         --*/          
/*---Desarrollado por     : Javier Flores A.           --*/          
/*---Fecha Creaci¸n       : 10/07/1999                 --*/          
/*---Base Datos           : Microsoft Sql Server       --*/          
/*---Versi¸n              : 7.0                        --*/          
/*---Invoca a SP          :                            --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/        
/*---Modificado 1 por     : Miguel Carrasco                       --*/        
/*---Fecha Modificaci÷n   : 23/06/2009                 --*/         
/*---Detalle Modificaci÷n : Actividad tipo de operacion solo cabecera--*/     
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/          
/*---Comentarios                                       --*/          
/*---                                                  --*/          
/*---                                                  --*/          
/*-------------------------------------------------------*/          
          
/*-------------------------------------------------------*/          
/*---Drop Proc SP_TCMOVI_CAJA_I13                      --*/          
/*---Grant Execute on SP_TCMOVI_CAJA_I13 to public         --*/           
/*---SP_TCMOVI_CAJA_I13                                --*/          
/*-------------------------------------------------------*/          
  
 As  
Declare          
   @VNCO_NUEV_NUME      TD_IN_001,           
   @VSCO_NUEV_CHAR      TD_VC_008,          
   @VNNU_REGI           TD_IN_001,          
   @VSST_INTE_BACH TD_VC_001,          
   @VSTI_OPNI_CARG TD_VC_003,          
   @VSTI_OPNI_ABON TD_VC_003,        
/*-----------------------------------*/      
   @VSNU_DOCU_ENRE  TD_VC_020,        
   @VSST_SERI   TD_VC_001,         
   @VSST_FILL   TD_VC_001,         
   @VNNU_LONG   TD_IN_001,         
   @VNNU_LONG_SERI  TD_IN_001,        
   @VSCO_TIPO_OPER      TD_VC_003,        
   @VSST_DOCU_ENRE      TD_VC_001,

@ISCO_EMPR   TD_VC_002,           
 @ISCO_USUA_MODI  TD_VC_008_USUA,          
 @ISCO_CAJA   TD_VC_008,           
 @ISAA_CAJA   TD_VC_004,           
 @ISMM_CAJA   TD_VC_002,           
 @ISTI_MOVI   TD_VC_001,            
 @ISNU_COMP_CAJA  TD_VC_008,           
 @IDFE_OPER   TD_DT_001,           
 @ISCO_TIPO_OPER  TD_VC_003,           
 @ISCO_SUBR     TD_VC_003,           
 @INFA_TIPO_CAMB  TD_NU_015_006,           
 @INFA_CAMB_EXTR  TD_NU_015_006,           
 @INIM_MOVI   TD_NU_016_004,           
 @ISTI_ENTI   TD_VC_001,          
 @ISCO_ENTI   TD_VC_020,           
 @ISDE_ENTI   TD_VC_100,           
 @ISDE_OBSE   TD_VC_100,           
 @ISTI_CORR_INEG  TD_VC_001,          
 @INUL_CORR_EGRE  TD_IN_001,          
 @INUL_CORR_INEG  TD_IN_001,          
 @ISCO_ENTR_REND  TD_VC_004,          
 @ISCO_UNID_CNTB  TD_VC_003,          
 @ISNU_SOLI       TD_VC_010,          
 @ISST_ASTO_RESU  TD_VC_001,          
 @ISTI_DOCU_ENRE  TD_VC_003,         
 @ISNU_SERI_ENRE  TD_VC_004,         
 @ISNU_DOCU_ENRE  TD_VC_020,  
 @ISCO_ORDE_SERV TD_VC_020            
          
 BEGIN TRAN SP_TCMOVI_CAJA_I13    


SELECT

 @ISCO_EMPR = CO_EMPR,
 @ISCO_USUA_MODI = CO_USUA_MODI,
 @ISCO_CAJA = CO_CAJA,
 @ISAA_CAJA = AA_CAJA,
 @ISMM_CAJA = MM_CAJA,
 @ISTI_MOVI = TI_MOVI,
 @ISNU_COMP_CAJA = NU_COMP_CAJA,
 @IDFE_OPER = FE_OPER,
 @ISCO_TIPO_OPER = CO_TIPO_OPER,
 @ISCO_SUBR = CO_SUBR,
 @INFA_TIPO_CAMB = FA_TIPO_CAMB,
 @INFA_CAMB_EXTR = FA_CAMB_EXTR,
 @INIM_MOVI = IM_MOVI,
 @ISTI_ENTI = TI_ENTI,
 @ISCO_ENTI = CO_ENTI,
 @ISDE_ENTI = DE_ENTI,
 @ISDE_OBSE = DE_OBSE,
 @ISTI_CORR_INEG = TI_CORR_INEG,
 @INUL_CORR_EGRE = UL_CORR_EGRE,
 @INUL_CORR_INEG = UL_CORR_INEG,
 @ISCO_ENTR_REND = CO_ENTR_REND,
 @ISCO_UNID_CNTB = CO_UNID_CNTB,
 @ISNU_SOLI = NU_SOLI,
 @ISST_ASTO_RESU = ST_ASTO_RESU,
 @ISTI_DOCU_ENRE = TI_DOCU_ENRE,
 @ISNU_SERI_ENRE = NU_SERI_ENRE,
 @ISNU_DOCU_ENRE = NU_DOCU_ENRE,
 @ISCO_ORDE_SERV = CO_ORDE_SERV

FROM #TWMOVI_CAJA_I01      
          
  /** inserta en la cabecera de caja **/          
          
     Select @VSST_INTE_BACH = ST_INTE_BACH,         
 @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER          
     From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR          
          
   If @ISTI_DOCU_ENRE IS NOT NULL or @ISNU_DOCU_ENRE IS NOT NULL        
    Begin        
    Select  @VSST_SERI = ST_SERI, @VSST_FILL = ST_FILL, @VNNU_LONG = NU_LONG, @VNNU_LONG_SERI = NU_LONG_SERI        
    From    TTDOCU_CNTB        
    Where   TI_DOCU = @ISTI_DOCU_ENRE        
        
    If @VSST_SERI = 'S'        
      Select  @VSNU_DOCU_ENRE = @ISNU_SERI_ENRE +'-'+ @ISNU_DOCU_ENRE        
        
    If @VSST_SERI = 'N'        
      Select  @VSNU_DOCU_ENRE = @ISNU_DOCU_ENRE        
        
    End        
            
   If Rtrim(@ISCO_ENTR_REND) = ''          
       Select @ISCO_ENTR_REND = NULL          
          
    /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/           
    If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND           
 @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON          
          
 Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR,@ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_CAJA OUTPUT        
     
          
    Else          
 Begin          
      Select   @VNNU_REGI = Count(*)           
      From  TCMOVI_CAJA          
      Where  CO_EMPR = @ISCO_EMPR           
       And CO_CAJA = @ISCO_CAJA          
       And AA_CAJA = @ISAA_CAJA          
       And MM_CAJA = @ISMM_CAJA           
       And TI_MOVI = 'E'            
       And NU_COMP_CAJA = @ISNU_COMP_CAJA          
          
      If @VNNU_REGI > 0 OR RTRIM(ISNULL(@ISNU_COMP_CAJA, '')) = ''          
   Begin               
           Select @VSCO_NUEV_CHAR  = ISNULL(MAX(NU_COMP_CAJA) , '0')          
           From TCMOVI_CAJA          
    Where CO_EMPR = @ISCO_EMPR           
           And   CO_CAJA = @ISCO_CAJA          
           And   AA_CAJA = @ISAA_CAJA           
          
           And   MM_CAJA = @ISMM_CAJA           
           And   TI_MOVI = 'E'            
    And   NU_COMP_CAJA LIKE '000%'          
          
           Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1          
          
    Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)          
          
          
           -- RELLENA DE CEROS HASTA 8 CARACTERES           
    Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'')    
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))                    
          
           Select @ISNU_COMP_CAJA = @VSCO_NUEV_CHAR           
         End          
          
          
 End          
    
 IF RTRIM( ISNULL (@ISNU_SERI_ENRE,''))!= '' AND NOT EXISTS (Select NU_DOCU_ENRE    
 From TCMOVI_CAJA    
 Where CO_EMPR = @ISCO_EMPR    
 And CO_CAJA = @ISCO_CAJA    
 And TI_MOVI = 'I'    
 And TI_DOCU_ENRE IS NOT NULL    
 And TI_SITU = 'ACT'    
 And TI_DOCU_ENRE = @ISTI_DOCU_ENRE    
 And NU_DOCU_ENRE = @ISNU_DOCU_ENRE)    
  
 Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENRE, @ISNU_SERI_ENRE, @ISNU_DOCU_ENRE OUTPUT            
    
    
          
    Insert Into TCMOVI_CAJA(          
    CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,           
    FE_OPER, CO_TIPO_OPER, CO_SUBR, FA_TIPO_CAMB, FA_CAMB_EXTR, IM_MOVI, CO_ENTR_REND, TI_ENTI,           
    CO_ENTI, DE_ENTI, DE_OBSE, ST_CONT, NU_PROC, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI,FE_USUA_MODI,    
CO_UNID_CONC,           
    NU_SOLI, TI_DOCU_ENRE, NU_DOCU_ENRE,CO_ORDE_SERV)          
    Values (          
    @ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI,           
    @ISNU_COMP_CAJA, @IDFE_OPER, @ISCO_TIPO_OPER, @ISCO_SUBR, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR, @INIM_MOVI,           
    RTRIM(@ISCO_ENTR_REND), @ISTI_ENTI, @ISCO_ENTI, @ISDE_ENTI, @ISDE_OBSE, 'N', NULL,           
    'ACT', @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI,GETDATE(), @ISCO_UNID_CNTB, @ISNU_SOLI, @ISTI_DOCU_ENRE,    
@VSNU_DOCU_ENRE,@ISCO_ORDE_SERV)          
          
    If @@error <> 0          
       Begin          
  Rollback tran          
         Return          
       End          
            
          
    /* Actualizando Estado y Fecha Liquidaci®n Solicitud Caja */          
      
     Update  TMSOLI_CABA           
 Set  TI_SITU = 'LIQ',           
  FE_LIQU = @IDFE_OPER,          
            CO_USUA_MODI = @ISCO_USUA_MODI,           
  FE_USUA_MODI = GETDATE()          
     Where   CO_EMPR = @ISCO_EMPR          
      And NU_SOLI = @ISNU_SOLI          
          
    If @@error <> 0          
       Begin          
         rollback tran          
    return          
       End            
          
          
   /* ----------- Actualiza los Correlativos ------------------ */          
    If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR           
 @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON          
      Begin              
  If @ISTI_CORR_INEG = 'N'          
    Begin          
  Select @INUL_CORR_EGRE = UL_CORR_EGRE           
         From TMSACA_MENS          
         WHERE CO_EMPR = @ISCO_EMPR            
         AND   CO_CAJA = @ISCO_CAJA          
         AND   AA_CAJA = @ISAA_CAJA           
         AND   MM_CAJA = @ISMM_CAJA           
          
         Update TMSACA_MENS          
         Set    UL_CORR_EGRE = @INUL_CORR_EGRE + 1, CO_USUA_MODI = @ISCO_USUA_MODI,           
                     FE_USUA_MODI = GETDATE()          
          Where  CO_EMPR = @ISCO_EMPR           
         And    CO_CAJA = @ISCO_CAJA          
         And    AA_CAJA = @ISAA_CAJA          
         And    MM_CAJA = @ISMM_CAJA          
          
         If @@error <> 0          
                 Begin          
                   Rollback tran          
              Return          
                 End          
           End          
     Else          
    Begin          
    Select @INUL_CORR_INEG = UL_CORR_INEG           
         From TMSACA_MENS          
         WHERE CO_EMPR = @ISCO_EMPR            
         AND   CO_CAJA = @ISCO_CAJA          
         AND   AA_CAJA = @ISAA_CAJA           
         AND   MM_CAJA = @ISMM_CAJA           
          
         Update TMSACA_MENS          
         Set    UL_CORR_INEG = @INUL_CORR_INEG + 1, CO_USUA_MODI = @ISCO_USUA_MODI,           
                     FE_USUA_MODI = GETDATE()          
          Where  CO_EMPR = @ISCO_EMPR           
         And    CO_CAJA = @ISCO_CAJA          
         And    AA_CAJA = @ISAA_CAJA          
         And    MM_CAJA = @ISMM_CAJA          
          
         If @@error <> 0          
                 Begin          
                   Rollback tran          
              Return          
                 End          
        End          
               
    End          
          
 Commit Tran          
          
SELECT @ISNU_COMP_CAJA          
RETURN          
          
/*------------------------ Fin ------------------------------*/  

GO
